#include<stdio.h>
#include<string>
#include<queue>
#include<iostream>
using namespace std;
typedef struct node{
	int data;
	struct node *lchild;
	struct node *rchild;
}BTNode;
typedef struct node *BTree;
BTNode *create(int *post,int *in,int n);
void preorder(BTNode *b); 
int main()
{
	BTree B;
	int i=0,n;
	cin>>n;
	int str1[n],str2[n];
	for(i=0;i<n;i++)
	cin>>str1[i];
	for(i=0;i<n;i++)
	cin>>str2[i];
	B=create(str1,str2,n);
	cout<<"Preorder:";
	preorder(B); 
	return 0;
}

BTree create(int *post,int *in,int n)
{
	BTree b;
	int r,*p;
	int k;
	if(n<=0)return NULL;
	r=*(post+n-1);
	b=new BTNode;
	b->data=r;
	for(p=in;p<in+n;p++)
	{
		if(*p==r)
		break;
	}
	k=p-in;
	b->lchild=create(post,in,k);
	b->rchild=create(post+k,p+1,n-k-1);
	return b;
}
void preorder(BTNode *b)
{
	if(b!=NULL)
	{
		cout<<" "<<b->data;
		preorder(b->lchild);
		preorder(b->rchild);
	}
}

